<?php
/**
 * Controle de Usuario
 * @filesource  06/04/2011
 * @author      Estrada Virtual <http://estradavirtual.com.br>
 * @copyright   Copyright <2011> Estrada Virtual
 * @package     <<application>>
 * @subpackage  <<application>>.application.controllers
 * @version     $Id$
 */
class UsuarioController extends App_Controller_Crud
{

    public function extrasGrid($oGrid)
    {
        if (!$this->_getParam('_exportTo')) {
            $baseUrl   = $this->view->baseUrl();
            $sControle =  'corporativo/usuario';
            $sId       = 'id_usuario';
            $extra = new Bvb_Grid_Extra_Column();
            $extra->position ('left')
                  ->name('Ação')
                  ->decorator ('
                            <a class="mr-5" href="' . $baseUrl . '/'. $sControle . '/formulario/id/{{' . $sId . '}}" rel="tooltip" title="Editar" data-ajax-modal="#modal-basico"><i class="icon-edit"></i></a>
                            <a href="' . $baseUrl . '/'. $sControle . '/excluir/id/{{' . $sId . '}}" rel="tooltip" title="Excluir"><i class="icon-trash"></i></a>
                        ');
            $oGrid->addExtraColumns($extra);
        }
        return $oGrid;
    }

    public function novoAction()
    {
        // Grava o registro caso tenha sido submetido via post
        if ($this->getRequest()->isPost()) {
            // Validações de campos
            if (!Zend_Validate::is($this->_getParam('st_email'), 'EmailAddress')) {
                $this->_addMessage('<strong>Erro!</strong> Endereço de email inválido', 'corporativo/usuario/listar');
                return;
            }

            try {

                // Prepara para gravar na tabela
                $dados = $this->_getAllParams();
                $usuario = new Model_Usuario();
                $rowUsuario = $usuario->createRow();
                $rowUsuario->setFromArray($dados);
                $rowUsuario->dt_cadastro = date('Y-m-d H:i:s');
                $rowUsuario->bo_admin    = 'F';
                $rowUsuario->st_senha    = md5($rowUsuario->st_senha);
                $rowUsuario->save();

                $this->_addMessage('<strong>Ok!</strong> Usuário criado com sucesso!', 'corporativo/usuario/listar');

            }catch(Exception $e) {
                $this->_addMessage('<strong>Erro!</strong> Houve um falha ao tentar criar o novo usuário!', 'corporativo/usuario/listar');
            }
        }
    }

    public function papelAction()
    {
        $oUsuario = Zend_Auth::getInstance()->getIdentity();
        $modelUsuario = new Model_Usuario();
        $rowUsuario = $modelUsuario->find($oUsuario->id_usuario)->current();

        // Papeis relacionados
        $rowSetPapeisUsuario = $rowUsuario->findModel_PapelViaModel_PapelUsuario();
        $aPapeisUsuario = $rowSetPapeisUsuario->toArray();

        // Responsável por tais papeis
        $rowSetPapeisUsuarioResponsavel = $rowUsuario->findModel_Papel();
        $aResponsavel = array();
        foreach ($rowSetPapeisUsuarioResponsavel as $rowPapel) {
            $aResponsavel[$rowPapel->id_papel] = true;
            $aPapeisUsuario[] = $rowPapel;
        }
        $aPapeis = array();
        foreach ($aPapeisUsuario as $rowPapel) {
            $oPapel = (object) $rowPapel->toArray();
            // Verifica se é o responsável
            $oPapel->responsavel = isset($aResponsavel[$rowPapel->id_papel]);

            $rowSetAtividades = $rowPapel->findModel_PapelAtividade();
            $oPapel->rowSetAtividades = $rowSetAtividades;
            $aPapeis[] = $oPapel;
        }

        //Zend_Debug::dump($aPapeis); die;
        $this->view->rowUsuario = $rowUsuario;
        $this->view->aPapeis = $aPapeis;
    }
}
